package com.ruoyi.system.service.impl;

import java.util.ArrayList;
import java.util.List;

import com.alibaba.druid.sql.PagerUtils;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.ruoyi.common.core.controller.BaseController;
import com.ruoyi.common.core.domain.entity.SysUser;
import com.ruoyi.common.utils.SecurityUtils;
import com.ruoyi.common.utils.StringUtils;
import com.ruoyi.system.mapper.SysUserMapper;
import org.apache.catalina.security.SecurityUtil;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.ruoyi.system.domain.SysLogininfor;
import com.ruoyi.system.mapper.SysLogininforMapper;
import com.ruoyi.system.service.ISysLogininforService;

/**
 * 系统访问日志情况信息 服务层处理
 *
 * @author ruoyi
 */
@Service
public class SysLogininforServiceImpl extends BaseController implements ISysLogininforService
{

    @Autowired
    private SysLogininforMapper logininforMapper;
    @Autowired
    private SysUserMapper sysUserMapper;
    /**
     * 新增系统登录日志
     *
     * @param logininfor 访问日志对象
     */
    @Override
    public void insertLogininfor(SysLogininfor logininfor)
    {
        logininforMapper.insertLogininfor(logininfor);
    }

    /**
     * 查询系统登录日志集合
     *
     * @param logininfor 访问日志对象
     * @return 登录记录集合
     */
    @Override
    public List<SysLogininfor> selectLogininforList(SysLogininfor logininfor)
    {
        return logininforMapper.selectLogininforList(logininfor);
    }

    /**
     * 查询系统登录日志集合
     *
     * @param logininfor 访问日志对象
     * @return 登录记录集合
     */
    @Override
    public List<SysLogininfor> selectLogininforList1(SysLogininfor logininfor)
    {
        SysUser user = new SysUser();
        String username = SecurityUtils.getUsername();
        user.setUserName(username);
        System.out.println(username);
        //获取到登入用户的 省市县code
        SysUser sysUser = sysUserMapper.getUserAddrCode(username);
        List<SysUser> userList = new ArrayList<>();
        //判断账号是哪一个级别
        //省级账号
        if (StringUtils.isNotEmpty(sysUser.getProvinceCode())&&
                StringUtils.isEmpty(sysUser.getCityCode())&&
                StringUtils.isEmpty(sysUser.getAreaCode())) {
            user.setProvinceCode(sysUser.getProvinceCode());
            userList = sysUserMapper.getProvinceUser(user);
        //市级账号
        }else if (StringUtils.isNotEmpty(sysUser.getProvinceCode())&&
                    StringUtils.isNotEmpty(sysUser.getCityCode())&&
                    StringUtils.isEmpty(sysUser.getAreaCode())){
            user.setProvinceCode(sysUser.getProvinceCode());
            user.setCityCode(sysUser.getCityCode());
            userList = sysUserMapper.getCityUser(user);
         //县级账号
        }else if (StringUtils.isNotEmpty(sysUser.getProvinceCode())&&
                    StringUtils.isNotEmpty(sysUser.getCityCode())&&
                    StringUtils.isNotEmpty(sysUser.getAreaCode())){
            user.setProvinceCode(sysUser.getProvinceCode());
            user.setCityCode(sysUser.getCityCode());
            user.setAreaCode(sysUser.getAreaCode());
            userList = sysUserMapper.getAreaUser(user);
        }
        //然后更具查询到的username去查询用户下的登入信息
        startPage();
        List<SysLogininfor> logininfoList = logininforMapper.selectLoginInfo(userList);
        return logininfoList;
    }

    /**
     * 批量删除系统登录日志
     *
     * @param infoIds 需要删除的登录日志ID
     * @return
     */
    @Override
    public int deleteLogininforByIds(Long[] infoIds)
    {
        return logininforMapper.deleteLogininforByIds(infoIds);
    }

    /**
     * 清空系统登录日志
     */
    @Override
    public void cleanLogininfor()
    {
        logininforMapper.cleanLogininfor();
    }
}
